In a computer system, Direct Memory Access (“DMA”) typically refers to the use of a memory controller, independent of the computer's main processor, to control the reading and writing of data to/from the computer's main memory by other devices connected therewith. DMA is a capability provided by the computer's bus architecture that allows data to be sent directly, rather than via the main processor, between an attached data device (such as a disk drive, scanner, video processor, printer, etc.) and the main memory of the computer.
In systems without DMA functionality, memory accesses, such as a request for data to be retrieved from a disk drive and stored in the main memory, are controlled, regulated and monitored by the main processor. However, such involvement of the main processor reduces the amount of resources that are available for other processing tasks and generally reduces overall system performance. By providing DMA functionality, the responsibility for monitoring and controlling memory accesses can be offloaded from the main processor thereby freeing up those resources that would otherwise be consumed and improving overall performance.
The DMA controller is typically connected, via a data and/or address/control bus, between the memory and the data devices which need to read data from or write data to the memory, referred to as data devices, and is further connected with the main processor or other devices which make requests for such transfers of data, referred to as requestors. A requestor may also be a data device that is requesting that data be transferred between it and the memory, or the requestor and the data device may be separate devices.
Data transfers, as controlled by the DMA functionality, are typically structured and/or optimized so as to efficiently take advantage of the logical and physical arrangement and constraints of the computer system's memory architecture. For example, the amount of data transferred in a given operation is typically constrained to a portion sized as a multiple of the size of the computer's data bus so as to efficiently utilize the bandwidth provided thereby. However, these optimizations may result in tradeoffs with respect to the needs of the devices that request data from the memory via the DMA functionality. Accordingly, it would be desirable to provide DMA functionality which is capable of efficiently addressing specific needs of specific requestors.